package cn.com.blueInfo.bpm.person.request;

import cn.com.blueInfo.bpm.common.request.BaseDTO;
import cn.com.blueInfo.bpm.common.request.BaseQueryDTO;
import cn.com.blueInfo.bpm.person.enums.GroupFormulaFilterType;
import com.alibaba.fastjson.JSONObject;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotNull;

/**
 * 群组公式表 接收参数机校验
 * @author suxch
 * @since 2025-08-24 01:39:52
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "群组公式 接收参数及校验")
public class GroupFormulaDTO extends BaseDTO {

    /** 群组ID */
    @NotNull(message = "群组ID 不能为空")
    @Schema(description = "群组ID")
    private Long groupId;
    /** 过滤方式：0-动态过滤，1-岗位定义 */
    @NotNull(message = "过滤方式 不能为空")
    @Schema(description = "过滤方式：0-动态过滤，1-岗位定义")
    private GroupFormulaFilterType filterType;
    /** 过滤范围 */
    @Schema(description = "过滤范围")
    private String filterBound;
    /** 过滤SQL */
    @Schema(description = "过滤SQL")
    private JSONObject filterSql;
    /** 拟稿人所在组织ID */
    @Schema(description = "拟稿人所在组织ID")
    private Long draftOrgId;

    /**
     * 群组公式 接收分页查询参数
     * @author suxch
     * @since 2025-08-21 05:08:55
     */
    @Data
    @EqualsAndHashCode(callSuper = true)
    @Schema(description = "群组公式 接收分页查询参数")
    public static class QueryDTO extends BaseQueryDTO {

        /** 群组ID */
        @Schema(description = "群组ID")
        private Long groupId;
        /** 过滤方式：0-动态过滤，1-岗位定义 */
        @Schema(description = "过滤方式：0-动态过滤，1-岗位定义")
        private GroupFormulaFilterType filterType;
        /** 过滤范围 */
        @Schema(description = "过滤范围")
        private String filterBound;
        /** 过滤SQL */
        @Schema(description = "过滤SQL")
        private JSONObject filterSql;
        /** 拟稿人所在组织ID */
        @Schema(description = "拟稿人所在组织ID")
        private Long draftOrgId;

    }

    /**
     * 群组公式 接收部分更新参数及校验
     * @author suxch
     * @since 2025-08-21 05:08:55
     */
    @Data
    @EqualsAndHashCode(callSuper = true)
    @Schema(description = "群组公式 接收部分更新参数及校验")
    public static class UpdatePartialDTO extends BaseDTO {

        /** 过滤范围 */
        @Schema(description = "过滤范围")
        private String filterBound;
        /** 过滤SQL */
        @Schema(description = "过滤SQL")
        private JSONObject filterSql;
        /** 拟稿人所在组织ID */
        @Schema(description = "拟稿人所在组织ID")
        private Long draftOrgId;

    }

}